package com.sq.partner.manager.service;

import java.util.HashMap;
import java.util.Map;

import com.sq.partner.manager.mybatis.model.CommamtFee;
import com.sq.partner.manager.mybatis.model.FacadeNewPayment;
import com.sq.partner.manager.mybatis.model.GatewayUser;

/**
 * 激活卡出库缴费（集中收款平台缴费）service
 * 
 * @author zhouxx 2019-03-08
 *
 */
public interface OutboundNewPayService {

    /**
     * 取得出库信息
     * 
     * @param commamtId
     * @return
     * @throws Exception
     */
    public CommamtFee queryForPay(String commamtId) throws Exception;

    /**
     * 根据条件查询payment信息
     * 
     * @param map
     * @return
     * @throws Exception
     */
    public FacadeNewPayment queryNewPayment(HashMap<String, String> map)
            throws Exception;

    /**
     * 出库支付支付前保存支付信息
     * 
     * @param tp
     * @param userCode
     * @return
     * @throws Exception
     */
    public FacadeNewPayment saveFacadeNewPayment(CommamtFee commamtFee,
            GatewayUser gatewayuser) throws Exception;

    /**
     * 出库用的收款状态查询接口
     * 
     * @param facadeNewPayment
     * @return
     * @throws Exception
     */
    public FacadeNewPayment noPaymentStatusForOut(
            FacadeNewPayment facadeNewPayment) throws Exception;

    /**
     * 出库缴费完成更新出库表状态
     * 
     * @param payId
     * @param statusBef
     * @param statusAft
     * @throws Exception
     */
    public void updatCommamtInfo(String payId, String statusBef,
            String statusAft) throws Exception;

    /**
     * 出库缴费完成更新卡单表状态
     * 
     * @param payId
     * @param statusBef
     * @param statusAft
     * @throws Exception
     */
    public void updateStatusByCommamtId(String payId, String statusBef,
            String statusAft) throws Exception;

    /**
     * 根据出库ID查找出库人数字工号
     * 
     * @param payId
     * @return
     * @throws Exception
     */
    public Map<String, String> getEmployeeNoByCommamtId(String payId)
            throws Exception;

    /**
     * 更新收款表
     * 
     * @param facadeNewPayment
     * @throws Exception
     */
    public boolean updateFacadeNewPay(FacadeNewPayment facadeNewPayment)
            throws Exception;
}
